// 单例 Singleton
let CreateSingleton = (function() {
    console.log('创建单例');
    // 多了一层作用域 作用域链
    let instance; // 实例  一直存在的单例
    // 闭包所在作用域一直存在
    return function(name) {  // constuctor
        if(instance){  // 之前实例化过
            return instance;
        }
        this.name=name;
        return instance = this;
    }
})();

CreateSingleton.prototype.getName = function() {
    console.log(this.name);
}

let singleton =new CreateSingleton('小明');
let dalao =new CreateSingleton('大佬');
// console.log(singleton.name);
console.log(singleton === dalao); // true
singleton.getName();  // 小明
dalao.getName();  // 小明